﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QuanLyKhachSan.BusinessLogic;
using QuanLyKhachSan.BusinessObject;
namespace QuanLyKhachSan
{
    public partial class frmMain : Form
    {
        //properties
       frmDangNhap fdn = null;
       NhanVienBL userBL = new NhanVienBL();
    //   frmChangePassword fcp = null;
       public int i = 100;
        public frmMain()
        {
            InitializeComponent();
            LoadSoPhong();
        }

        #region Các hàm xử lý login và phân quyền
        private void DisableMenuLogin(bool logged, string MaNhomNguoiDung = "N001")
        {
           // //nếu đăng nhập thành công thì menu đang nhập
           // itemDangNhap.Enabled = !logged;
           // // nếu đăng nhập thành công thì bật menu đăng xuất
           // itemDangXuat.Enabled = logged;
           //// itemDoiMatKhau.Enabled = logged;
           // //mặc định nếu đăng nhập thành công thì bật menu còn lại

           // itemQuanLyNguoiDung.Enabled = logged;

           // //meu nhập liệu
           // itemCapNhatCV.Enabled = logged;
           // btnThemDichVuPhong.Enabled = logged;
           // btnThemKhachHang.Enabled = logged;
           // itemCapNhatLoaiPhong.Enabled = logged;
           // btnThemPhieuThuePhong.Enabled = logged;
           // itemCapNhatNV.Enabled = logged;
           // itemCapNhatPhong.Enabled = logged;
           // btnThemDichVu.Enabled = logged;
           // itemThongKeKhachTheoNam.Enabled = logged;
           // itemThongKeKhachTheoThang.Enabled = logged;
           // btnInHoaDon.Enabled = logged;

           // switch (MaNhomNguoiDung)
           // {
           //     //nhóm admin không làm ẩn menu
           //     case "N001":
           //         break;
           //     //nhóm nhân viên ẩn menu ko thuộc quyền
           //     case "N002": HienThiNhanVien(); break;
           // }
        }

        //tiếp theo chúng ta xây dựng phương thức hiển thị menu theo tunegf nhóm
        private void HienThiNhanVien()
        {
            //tại đây ta sẽ viết cấc thuộc tính ẩn menu cho nhóm nhân viên
            itemCapNhatNV.Enabled = false;
            itemCapNhatCV.Enabled = false;
            itemCapNhatLoaiPhong.Enabled = false;
            itemCapNhatPhong.Enabled = false;
            //phân quyền theo nhóm

        }

        #endregion


        private void itemCapNhatNV_Click(object sender, EventArgs e)
        {
            frmNhanVien fnv = new frmNhanVien();
            fnv.TopLevel = false;
            pan.Controls.Clear();
            pan.Controls.Add(fnv);
            fnv.Show();
        }

        private void itemCapNhatKH_Click(object sender, EventArgs e)
        {
            
        }

        private void itemCapNhatCV_Click(object sender, EventArgs e)
        {
            frmChucVu fcv = new frmChucVu();
            fcv.TopLevel = false;
            pan.Controls.Clear();
            pan.Controls.Add(fcv);
            fcv.Show();
        }

       

        private void itemCapNhatLoaiPhong_Click(object sender, EventArgs e)
        {
            frmLoaiPhong flp = new frmLoaiPhong();
            flp.TopLevel = false;
            pan.Controls.Clear();
            pan.Controls.Add(flp);
            flp.Show();
        }

      

        private void itemCapNhatChiTietDV_Click(object sender, EventArgs e)
        {
           
        }

        private void itemCapNhatPhieuThuePhong_Click(object sender, EventArgs e)
        {
           
        }

        private void frmMain_Load(object sender, EventArgs e)
        {
           //mặc định khi load lên
            DisableMenuLogin(false); //disable all menu
         //   MessageBox.Show(Utilities.MaHoaMD5("719155"));
        }

        private void itemCapNhatPhong_Click(object sender, EventArgs e)
        {
            frmPhong fp = new frmPhong();
            fp.TopLevel = false;
            pan.Controls.Clear();
            pan.Controls.Add(fp);
            fp.Show();
        }

        private void itemCapNhatDichVu_Click(object sender, EventArgs e)
        {
            
        }

        private void itemHeThong_Click(object sender, EventArgs e)
        {
             
        }

        private void itemDangNhap_Click(object sender, EventArgs e)
        {
            //set lại trạng thái status menu
            statusDangNhap.Text = "Chưa đăng nhập";
            int numsErrorPassWord = 0;
            Cont:
            //kiểm tra nếu frm đăng nhập đã đc mở hay đóng nếu đóng thì ta new
            if (fdn == null || fdn.IsDisposed)
                fdn = new frmDangNhap();
            //show dialog form đăng nhập
            if (fdn.ShowDialog()==DialogResult.OK)
            {
                //gọi hàm đăng nhập
                //gán cho biến user dùng chung trong lớp utilities

                string username = fdn.txtUserName.Text;
                string password = fdn.txtPassWord.Text;
                if (username.Equals(""))
                {
                    //gán thông báo cho label thông báo
                    fdn.lblTrangThaiLogin.Text = "Username không hợp lệ";
                    //quay ngược trở lại đăng nhập tiếp
                    goto Cont;
                }
                if (password.Equals(""))
                {
                    //gán thông báo cho label thông báo
                    fdn.lblTrangThaiLogin.Text = "Mật khẩu không hợp lệ";
                    //quay ngược trở lại đăng nhập tiếp
                    goto Cont;
                }
                //luc này mới lấy thông tin user
                Utilities.user = userBL.LayThongTinUser(username);
                //trường hợp user không tồn tại
                if (Utilities.user.UserName.Equals(""))
                {
                    //gán thông báo cho label thông báo
                    fdn.lblTrangThaiLogin.Text = "User không tồn tại";
                    //quay ngược lên đăng nhập tiếp
                    goto Cont;
                }
                //trường hoepj pass sai
                if (Utilities.user.PassWord != Utilities.MaHoaMD5(password))
                {
                    //gán thông báo cho label thông báo
                    fdn.lblTrangThaiLogin.Text = "pass không tồn tại";
                    numsErrorPassWord++;
                    if (numsErrorPassWord == 3)
                        this.Close();
                    //quay ngược lên đăng nhập tiếp
                    goto Cont;
                }
                //trường hợp đăng nhập thành công 
                //set lại menu theo quyền
                DisableMenuLogin(true, Utilities.user.MaNhom); 
                //gán status 
                statusDangNhap.Text = Utilities.user.TenNhom + ":" + Utilities.user.TenNhanVien;
            }
        }

        private void itemDangXuat_Click(object sender, EventArgs e)
        {
            //khởi tạo lại biến user dùng chung
            NhanVienBO user = new NhanVienBO();
            Utilities.user = user;
            DisableMenuLogin(false);
            //mở lại form đang nhập
            fdn.txtUserName.Text = "";
            fdn.txtPassWord.Text = "";
            itemDangNhap_Click(sender, e);

            
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            lblGioHienTai.Text = DateTime.Now.ToString("hh:mm:ss");
        }

        private void timer2_Tick(object sender, EventArgs e)
        {
            lblNgayHienTai.Text = DateTime.Now.ToString("dd");
        }

        private void timer3_Tick(object sender, EventArgs e)
        {
            lblThangNam.Text = DateTime.Now.ToString("'Tháng 'MM' năm 'yyyy");
        }

        private void timer4_Tick(object sender, EventArgs e)
        {
            lblChuChay.Left += i;
            if (lblChuChay.Left >= this.Width - lblChuChay.Width || lblChuChay.Left <=300)
            {
                i = -i;
            }
        }

        public void LoadSoPhong() {
            int phongTrong = PhongBL.DemPhongTrong();
            int tongPhong = PhongBL.DemPhong();
            int tongKhach = KhachHangBL.DemKhach();
            lblSoPhongTrong.Text = phongTrong.ToString();
            lblTongSoPhong.Text = tongPhong.ToString();
            lblSoKhachThue.Text = tongKhach.ToString();
        }

        private void btnThemKhachHang_Click(object sender, EventArgs e)
        {
            frmKhachHang fkh = new frmKhachHang();
            fkh.TopLevel = false;
            pan.Controls.Clear();
            pan.Controls.Add(fkh);
            fkh.Show();
        }

        private void btnThemPhieuThuePhong_Click(object sender, EventArgs e)
        {
            frmPhieuThuePhong fptp = new frmPhieuThuePhong();
            fptp.TopLevel = false;
            pan.Controls.Clear();
            pan.Controls.Add(fptp);
            fptp.Show();
        }

        private void btnThemDichVu_Click(object sender, EventArgs e)
        {
            frmDichVu fdv = new frmDichVu();
            fdv.TopLevel = false;
            pan.Controls.Clear();
            pan.Controls.Add(fdv);
            fdv.Show();
        }

        private void btnThemDichVuPhong_Click(object sender, EventArgs e)
        {
            frmChiTietDV fctdv = new frmChiTietDV();
            fctdv.TopLevel = false;
            pan.Controls.Clear();
            pan.Controls.Add(fctdv);
            fctdv.Show();
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void itemThongKePhong_Click(object sender, EventArgs e)
        {
            phong rptp = new phong();
            rptp.TopLevel = false;
            pan.Controls.Clear();
            pan.Controls.Add(rptp);
            rptp.Show();
        }

        private void itemThongKePhieuThuePhong_Click(object sender, EventArgs e)
        {
            frm_thuephong rptptp = new frm_thuephong();
            rptptp.TopLevel = false;
            pan.Controls.Clear();
            pan.Controls.Add(rptptp);
            rptptp.Show();
        }

        private void itemThongKeDVPhong_Click(object sender, EventArgs e)
        {
            RptChiTietDV rptctdv = new RptChiTietDV();
            rptctdv.TopLevel = false;
            pan.Controls.Clear();
            pan.Controls.Add(rptctdv);
            rptctdv.Show();
        }

        private void itemThongKeKhachHang_Click(object sender, EventArgs e)
        {
            report_khachhang rpt = new report_khachhang();
            rpt.TopLevel = false;
            pan.Controls.Clear();
            pan.Controls.Add(rpt);
            rpt.Show();
        }
       
    }
}
